package com.sky.utils;

import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang.RandomStringUtils;
import org.springframework.stereotype.Component;

import java.math.BigDecimal;

/**
 * 模拟的微信支付工具类（用于个人学习测试，不调用真实微信支付接口）
 */
@Component
public class SimulatedWeChatPayUtil {

    /**
     * 模拟支付接口，直接返回预支付交易单数据
     *
     * @param orderNum    商户订单号
     * @param total       支付金额（单位：元）
     * @param description 商品描述
     * @param openid      微信用户的openid
     * @return 模拟的预支付交易单数据（JSON格式）
     * @throws Exception
     */
    public JSONObject pay(String orderNum, BigDecimal total, String description, String openid) throws Exception {
        // 模拟生成预支付交易单数据，不进行真实的HTTP调用
        JSONObject jo = new JSONObject();
        String timeStamp = String.valueOf(System.currentTimeMillis() / 1000);
        String nonceStr = RandomStringUtils.randomNumeric(32);
        jo.put("timeStamp", timeStamp);
        jo.put("nonceStr", nonceStr);
        jo.put("package", "prepay_id=SIMULATED_PREPAY_ID");
        jo.put("signType", "RSA");
        jo.put("paySign", "SIMULATED_PAY_SIGN");
        return jo;
    }

    /**
     * 模拟退款接口
     *
     * @param outTradeNo  商户订单号
     * @param outRefundNo 商户退款单号
     * @param refund      退款金额（单位：元）
     * @param total       原订单金额（单位：元）
     * @return 模拟退款响应
     * @throws Exception
     */
    public String refund(String outTradeNo, String outRefundNo, BigDecimal refund, BigDecimal total) throws Exception {
        return "{\"result\":\"success\",\"message\":\"Refund simulated\"}";
    }
}
